package com.zmn.plat.business.interfaces.service.group;

import java.util.List;

import com.zmn.plat.common.dto.service.group.ServiceGroupDIO;
import com.zmn.plat.common.dto.service.group.ServiceGroupDRO;
import com.zmn.plat.common.dto.service.item.ServiceItemDRO;
import com.zmn.plat.model.entity.service.group.ServiceGroup;
import com.zmn.plat.model.entity.service.group.ServiceGroupQuery;
import com.zmn.plat.model.vo.service.group.ServiceGroupCopyVO;
import com.zmn.plat.model.vo.service.group.ServiceGroupVO;

/**
 * @author tanbiao
 * @description
 * @since 2019/11/25 16:25
 * @modifier
 **/
public interface ServiceGroupBService {
    /**
     * 功能描述 :新增或者修改详情返回的实体
     * 
     * @author tanbiao
     * @since 2019/11/27
     * @param query
     * @return java.lang.Integer
     * @modifier
     */
    ServiceGroup findByKey(ServiceGroupQuery query);

    /**
     * 功能描述 :根据id查询分组信息
     * 
     * @author tanbiao
     * @since 2019/11/27
     * @param groupId
     * @return java.lang.Integer
     * @modifier
     */
    ServiceGroupDRO getById(Integer groupId);

    /**
     * 产品的关联的渠道和城市是否包含一口价
     *
     * @Param: channelId 渠道id
     * @Param: cityId 城市id
     * @return:
     */
    Boolean checkFixPriceByChannelIdAndCityIdAndProvinceId(Integer channelId, Integer cityId, Integer provinceId);

    /**
     * 功能描述 :根据服务分类一级产品分类和保内外参数查询故障分组和故障项目
     * 
     * @author tanbiao
     * @since 2019/11/25
     * @param query
     * @return java.util.List<com.zmn.plat.model.vo.service.group.ServiceGroupVO>
     * @modifier
     */
    List<ServiceGroupVO> listGroupVOByQuery(ServiceGroupQuery query);

    /**
     * 描述: 根据查询条件查询服务组列表信息
     *
     * @param query
     * @return: List<ServServiceGroupDRO>
     * @auther: tanghongjun
     * @since: 2018/10/23 11:12
     */
    List<ServiceGroupDRO> listByDIO(ServiceGroupDIO query);

    /**
     * 描述:根据产品ID查询服务项集合
     *
     * @param productId
     *            产品ID
     * @return: ResponseDTO<ServServiceGroupDRO>
     * @auther: tanghongjun
     * @since: 2018/11/1 10:16
     */
    List<ServiceItemDRO> listByProductId(Integer productId);

    /**
     * 功能描述 :服务分组新增修改
     * 
     * @author tanbiao
     * @since 2019/11/27
     * @param faultGroup
     * @param operator
     * @return java.lang.Integer
     * @modifier
     */
    Integer addEdit(ServiceGroup faultGroup, String operator);

    /**
     * 功能描述 :分组复制
     * 
     * @author tanbiao
     * @since 2019/11/27
     * @param faultGroup
     * @param mcStaffRealName
     * @return java.lang.Integer
     * @modifier
     */
    Integer copyGroupData(ServiceGroupCopyVO faultGroup, String mcStaffRealName);

}
